#ifndef __PARSE_OPTION_H__
#define __PARSE_OPTION_H__

#include <string>

#include "cyclone_parser_support.h"

namespace cyclone::parser
{
    enum class Version : short
    {
        V1 = 1,
        Latest,
    };
    /**
     * @brief allowParensInType ,allowUndefinedInType
     *
     */
    struct PARSER_LIBRARY_EXPORT ParseTypeOption
    {
        /**
         * @brief Allow parens in type e.g. let a : (string) ;
         *
         */
        bool allowParensInType = false;

        bool allowUndefinedInType = false;
    };

    struct PARSER_LIBRARY_EXPORT ParseOption : ParseTypeOption
    {
        /**
         * @brief Productions , e.g. program , identifier , type
         *
         */
        std::string type;
        std::string valueRaw;

        /**
         * @brief Default is false, enable printing location property in the Node if true
         *
         */
        bool locations = false;
        /**
         * @brief Skipping ParenthesizedExpression by default
         *
         */
        bool preserveParens = false;

        Version version = Version::Latest;
    };

} // namespace cyclone::parser

#endif // __PARSE_OPTION_H__